﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using QldtSdh.DAL.Models;
using QldtSdh.GUI.Utils;

namespace QldtSdh.GUI.HeThong
{
    public partial class FormQuanLyNguoiDung : QldtSdh.GUI.Common.BaseDialog
    {
        public FormQuanLyNguoiDung()
        {
            InitializeComponent();
            gridData.AddRowIndexing();
            InitGrid();
            LoadDanhSach();
        }

        void InitGrid()
        {
            gridData.AutoGenerateColumns = false;
            colTenDangNhap.DataPropertyName = "UserName";
            colHoVaTen.DataPropertyName = "FullName";
            colChucNang.DataPropertyName = "_Description";
            colTinhTrang.DataPropertyName = "_Status";
        }

        void LoadDanhSach()
        {
            var ls = BLL.HeThong.GetList();
            bdData.DataSource = ls;
            gridData.DataSource = bdData;
            if (ls != null && ls.Count > 0)
            {
                btnSua.Enabled = btnXoa.Enabled = true;
            }
            else
                btnSua.Enabled = btnXoa.Enabled = false;
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            var dg = new FormQuanLyNguoiDung_Detail();
            dg.OnChanged += (o, t) =>
            {
                LoadDanhSach();
            };
            dg.ShowDialog();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            var current = bdData.Current as AppUser;
            if (current != null)
            {
                var dg = new FormQuanLyNguoiDung_Detail(current);
                if (dg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    LoadDanhSach();
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            var current = bdData.Current as AppUser;
            if (current != null)
            {
                if (DialogUtils.ShowOKCancel("Bạn có thực sự muốn xóa người này") == System.Windows.Forms.DialogResult.OK)
                {
                    if (current.UserName == FormMain.NguoiSuDung.UserName)
                        DialogUtils.ShowMessage("Bạn không thể xóa chính bạn");
                    else
                    {
                        var rs = BLL.HeThong.Delete(current);
                        if (rs == BLL.CODE_RESULT_RETURN.ThanhCong)
                        {
                            bdData.RemoveCurrent();
                            gridData.Refresh();
                            UpdateInterface();
                        }
                        else
                        {
                            DialogUtils.ShowError("Không thể xóa người này");
                        }
                    }
                }
            }
        }

        private void btnLock_Click(object sender, EventArgs e)
        {
            var current = bdData.Current as AppUser;
            if (current != null)
            {
                if (DialogUtils.ShowOKCancel("Bạn có thực sự muốn thu lại quyền sử dụng của người này") == System.Windows.Forms.DialogResult.OK)
                {
                    if (current.UserName == FormMain.NguoiSuDung.UserName)
                        DialogUtils.ShowMessage("Bạn không thể thu lại quyền của chính bạn");
                    else
                    {
                        current.IsActive = false;
                        var rs = BLL.HeThong.Update(current);
                        if (rs == BLL.CODE_RESULT_RETURN.ThanhCong)
                        {
                            gridData.Refresh();
                            UpdateInterface();
                        }
                        else
                        {
                            current.IsActive = true;
                            gridData.Refresh();
                            DialogUtils.ShowError("Không thể thu lại quyền người này");
                        }
                    }
                }
            }
        }

        private void btnUnlock_Click(object sender, EventArgs e)
        {
            var current = bdData.Current as AppUser;
            if (current != null)
            {
                if (DialogUtils.ShowOKCancel("Bạn có thực sự muốn cấp lại quyền sử dụng cho người này") == System.Windows.Forms.DialogResult.OK)
                {

                    if (current.UserName == FormMain.NguoiSuDung.UserName)
                        DialogUtils.ShowMessage("Bạn không cấp lại quyền của chính bạn");
                    else
                    {
                        current.IsActive = true;
                        var rs = BLL.HeThong.Update(current);
                        if (rs == BLL.CODE_RESULT_RETURN.ThanhCong)
                        {
                            gridData.Refresh();
                            UpdateInterface();
                        }
                        else
                        {
                            current.IsActive = false;
                            DialogUtils.ShowError("Không thể cấp lại quyền người này");
                        }
                    }
                }
            }
        }

        private void bdData_CurrentChanged(object sender, EventArgs e)
        {
            UpdateInterface();
        }
        void UpdateInterface()
        {
            var current = bdData.Current as AppUser;
            if (current != null)
            {
                if (current.IsActive)
                {
                    btnUnlock.Enabled = false;
                    btnLock.Enabled = true;
                }
                else
                {
                    btnUnlock.Enabled = true;
                    btnLock.Enabled = false;
                }
            }
        }
    }
}
